#ifndef POOL_HEAD_H
#define POOL_HEAD_H
#include "common_head.h"
#include "queue.h"
#include "log.h"
#define BUF_SIZE 1000

typedef struct thread_state{
    pthread_t *list; //存储子线程的id

    queue que; //任务队列

    int num; //线程个数

    pthread_mutex_t lock; //互斥锁
    pthread_cond_t cond;//条件变量

    int exit_flag; //线程是否标记，0表示正常不退出，1表示退出
}thread_t;

/**
 * @brief 初始化线程池
 * 
 * @param status 指向线程池的指针
 * @param num 线程池中线程的个数
 * @return int 
 */
int init_pool(thread_t *status, int num);

/**
 * @brief 初始化socket对象
 * 
 * @param sockfd 文件描述符
 * @param port 端口
 * @param ip ip
 * @return int 
 */
int init_socket(int *sockfd,const char *port, const char *ip);

/**
 * @brief 将文件描述符加入到红黑树中
 * 
 * @param epfd 
 * @param fd 
 * @return int 
 */
int add_epoll(int epfd, int fd);

/**
 * @brief 线程处理函数
 * 
 * @param args 
 * @return void* 
 */
void *thread_handler(void *args);

#endif